const { createBrotliCompress } = require("zlib")

console.log('global begin')

setTimeout(function timer1 () {
  console.log('timer1 invoke')
}, 1800)

setTimeout(function timer2() {
  console.log('timer2 invoke')

  setTimeout(function inner() {
    console.log('inner invoke')
  }, 1000)
}, 1000)

console.log('global end')
// 0s
// global begin
// 1800毫秒后向消息队列插入一个消息（回调函数）: row 4
// 1000毫秒后向消息队列插入一个消息：row 8 - 12
// global end
// 执行栈代码执行完毕

// 1s
// 消息队列得到一个消息： row 8 - 12
// 把该消息放入执行栈执行
// timer2 invoke
// 1000毫秒后向消息队列插入一个消息: row 11
// 执行栈代码执行完毕

// 1.8s
// 消息队列得到一个消息：row 4
// 把该消息放入执行栈执行
// timer1 invoke
//  执行栈代码执行完毕

// 2s
// 消息队列得到一个消息：row 11
// 把该消息放入执行栈执行
// inner invoke
// 执行栈代码执行完毕


// Proxy类
const good = {
  name: '婴儿床',
  price: 666
}
let view = 0;
const goodProxy = new Proxy(good, {
  get(target, property) {
    if(property === 'name'){
      view ++;
      console.log('view: ' + view)
    }
    if(property in target) {
      return target[property]
    }
  },

  set(target, property , value) {
    if(property === 'price') {
      if(value < target.price) {
        console.log('价格变化：降价了！最新价：' + value)
      } else {
        console.log('价格变化 最新价：' + value)
      }
      target['price'] = value
    } else if(!property in target){
      console.log('新增属性：' + property)
      target[property] = value
    }
  }
})

console.log(goodProxy.name)
console.log(goodProxy.name)
goodProxy.price = 888
goodProxy.price = 688


// Promise
function getList() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(['Lily', 'LiLei', 'LeiMing'])
    }, 1500)
  })
}

function main() {
  const promiseToGetList = getList()
  promiseToGetList.then(value => {
    console.log('List: ' + value)
    return value
  }).then(value => {
    const listOfShortNames = value.filter(t => t.length < 6)
    console.log('ListOfShortNames: ' + listOfShortNames)
  })
}

main()